<?php
use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
/**
 * 短信发送
 * @param $to    接收人
 * @param $model    短信模板ID
 * @param $code   短信验证码
 * @return json
 */
function send_sms($to, $code){
    Vendor('api_sdk.vendor.autoload');
    // 加载区域结点配置
    Config::load();
    $profile = DefaultProfile::getProfile('cn-hangzhou', 'LTAIrXkXH6WIvTyS', 'LtGMjZ6EJphO8PY1Ve7eZPukXmn8jB');
    // 增加服务结点
    DefaultProfile::addEndpoint('cn-hangzhou', 'cn-hangzhou', 'Dysmsapi', 'dysmsapi.aliyuncs.com');
    // 初始化AcsClient用于发起请求
    $acsClient = new DefaultAcsClient($profile);
    // 初始化SendSmsRequest实例用于设置发送短信的参数
    $request = new SendSmsRequest();
    // 必填，设置雉短信接收号码
    $request->setPhoneNumbers($to);
    // 必填，设置签名名称
    $request->setSignName('有菜社区');
    // 必填，设置模板CODE
    $request->setTemplateCode('SMS_185822910');
    $params = array(
        'code' => $code,
    );
    // 可选，设置模板参数
    $request->setTemplateParam(json_encode($params));
    // 可选，设置流水号
    //if($outId) {
    //    $request->setOutId($outId);
    //}
    // 发起访问请求
    $acsResponse = $acsClient->getAcsResponse($request);
    // 打印请求结果
    return $acsResponse;
}

/**
 * 生成唯一的订单编号
 * @param $uid 用户id
 * @return string
 */
function rand_batch($uid)
{
    $order_no = date('Ym').$uid.substr(time(),3).rand(1000,9999);
    return $order_no;
}

/**
 * [将Base64图片转换为本地图片并保存]
 * @param  [Base64] $base64_image_content [要保存的Base64]
 * @param  [目录] $path [要保存的路径]
 */
function base64_image_content($base64_image_content,$new_file){
    //匹配出图片的格式
    if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content, $result)){
        $type = $result[2];
        if(!file_exists($new_file)){
            //检查是否有该文件夹，如果没有就创建，并给予最高权限
            mkdir($new_file, 0700);
        }
        $new_file = $new_file.time().".{$type}";
        if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){
            return '/'.$new_file;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

/**
 * 图片上传
 * @param $file 文件
 * @param $path 上传路径
 * @return bool|string
 */
function FileImg($file,$path)
{
    if(!isset($file['tmp_name']) || !$file['tmp_name']){
        AjaxReturn(-1,'未选择文件');
    }
    if($file['error'] > 0){
        AjaxReturn(-1,$file['error']);
    }
    $upload_path = $_SERVER['DOCUMENT_ROOT'].$path;
    if(!is_dir($upload_path)){
        AjaxReturn(-1,'上传路径不存在');
    }
    if(move_uploaded_file($file['tmp_name'],$upload_path.$file['name'])){
        return $path.$file['name'];
    }else{
        return false;
    }
}

/**
+--------------------------------------------------------------------------
 * 实现收货地址的正反序化的功能
 * @param $msg 编译内容
 * @param $type 类型 1:正序化 2:反序化
 * @date : 2020-04-01
+--------------------------------------------------------------------------
 */
function addreSerialize($msg,$type)
{
    $adident = \think\Db::name('address');
    if('1'==$type){
        $adFind = $adident->where("ad_id",$msg)->find();
        $addre = array(
            'aname'=> $adFind['ad_name'],
            'phone'=> $adFind['ad_phone'],
            'addre'=> $adFind['ad_area'].$adFind['ad_addre'],
        );
        $res = serialize($addre);
    }else{
        $res = unserialize($msg);
    }
    return $res;
}
/**
+--------------------------------------------------------------------------
 * 实现查询伞下人数
 * @param $members 所有用户
 * @param $mid 当前用户id
 * @date : 2020-04-09
+--------------------------------------------------------------------------
 */
function GetTeamMember($members, $mid) {
    $Teams=array();//最终结果
    $mids=array($mid);//第一次执行时候的用户id
    do {
        $othermids=array();
        $state=false;
        foreach ($mids as $valueone) {
            foreach ($members as $key => $valuetwo) {
                if($valuetwo['us_pid']==$valueone){
                    $Teams[]=$valuetwo['us_uid'];//找到我的下级立即添加到最终结果中
                    $othermids[]=$valuetwo['us_uid'];//将我的下级id保存起来用来下轮循环他的下级
                    array_splice($members,$key,1);//从所有会员中删除他
                    $state=true;
                }
            }
        }
        $mids=$othermids;//foreach中找到的我的下级集合,用来下次循环
    } while ($state==true);

    return count($Teams);
}
